package com.nari.heatshare.dao.springjdbc;

import java.util.Date;
import java.util.List;
import java.util.Map;

import com.nari.coreframe.dao.springjdbc.IAbstractDao;
import com.nari.heatshare.utils.queryvo.AssignMeterDataCustomizedQuery;
import com.nari.heatshare.utils.queryvo.AssignMeterDataStatisExtendQuery;
import com.nari.platform.model.PageCond;
import com.nari.platform.model.ResultWithPageCond;

public interface IAssignMeterDataJdbcDao extends IAbstractDao {

	/**
	 * 分页查询分配表数据定制查询列表
	 * @param projectUID
	 * @param communityUID
	 * @param buildingUID
	 * @param recordTimeStart
	 * @param recordTimeEnd
	 * @param pageCond
	 * @return
	 * @throws Exception
	 * @author Xiaopeng
	 * @date 2014-12-9
	 */
	public ResultWithPageCond<AssignMeterDataCustomizedQuery> queryCustomizedQueryPage(String projectUID, 
			String communityUID, String buildingUID, Date recordTimeStart, 
			Date recordTimeEnd, PageCond pageCond) throws Exception;
	
	/**
	 * 查询单个楼栋的上传数据定制资料
	 * @param buildingUID
	 * @param recordDate
	 * @return
	 * @throws Exception
	 * @author Xiaopeng
	 * @date 2015-2-4
	 */
	public AssignMeterDataCustomizedQuery queryBuildingCustomizedQuery(String buildingUID, 
			Date recordDate) throws Exception;
	
	/**
	 * 查询与批次上传的上传时间不匹配的分配表数据ID
	 * @param concentratorNo
	 * @param recordTime
	 * @return
	 * @throws Exception
	 * @author Xiaopeng
	 * @date 2014-12-28
	 */
	public String queryNonMatchReadTime4Batch(String concentratorNo, Date recordTime) throws Exception;
	
	/**
	 * 统计分配表数据一个上传批次的成功上传数
	 * 成功上传数认定条件：
	 * (1)隶属于当前设定的上传批次，即具备相同的集中器号和抄表日期；
	 * (2)分配表数据上传日期与该批次上传日期一致；
	 * (3)抄表数据在档案中存在对应记录
	 * @param concentratorNo 集中器号
	 * @param recordTime 抄表日期
	 * @param readTime 上传时间
	 * @param dataType 数据类型
	 * @return
	 * @throws Exception
	 * @author Xiaopeng
	 * @date 2015-1-13
	 */
	public int countSuccessUploadNumReferBatch(String concentratorNo, Date recordTime, 
			Date readTime, Integer dataType) throws Exception;
	
	/**
	 * 通过数据文件唯一标识查询对应的分配表数据任务批次信息
	 * @param dataFileID
	 * @return
	 * @throws Exception
	 * @author Xiaopeng
	 * @date 2015-1-17
	 */
	public List<Map<String, String>> queryUploadBatchByDataFileUID(String dataFileUID) throws Exception;
	
	/**
	 * 根据分配表数据批次UID查询其对应的档案资料扩展信息
	 * @param meterDataStatisUIDList 分配表数据批次UID列表
	 * 格式：XXX,XXX,XXX
	 * @return
	 * @throws Exception
	 * @author Xiaopeng
	 * @date 2015-1-25
	 */
	public Map<String, AssignMeterDataStatisExtendQuery> queryAmdStatisExtend(String meterDataStatisUIDList) throws Exception;
}
